Although computer programs typically execute in a computer system without major problems, users on occasion encounter system failures or other system-based anomalies. For example, a computer program or entire computer system can hang or crash during execution of one or more programs. A hang typically occurs when the application or system becomes unresponsive to user-supplied input, using for example a keyboard or mouse. A crash typically occurs when a program, either an application problem or operating system, ceases to perform anticipated functions or exits abnormally after encountering a problem.
In either event, there is the risk that a user will lose valuable data, perhaps a considerable amount, even if the user has periodically saved data during execution of the program. Moreover, regardless of whether or not data is lost owing to a computer system failure such as a hang or crash, a user usually will need to re-start every program that was in use before the failure, and every document typically will need to be read once again when the system is re-booted following the failure. Indeed, without an effective and efficient technique to re-start the computer system in the state it was in prior to the failure, previously-running programs will need to be re-started, previously-open documents re-opened, and all previously-established network connections re-established